A distributed system is a collection of two or more autonomous computers linked by a computer network where components, such as memory and processing units, located on these networked computers communicate and coordinate their actions to achieve a common goal. These components may communicate and coordinate with each other by passing messages. Examples of distributed systems are wide ranging. They include service-oriented architecture (SOA) based systems, massively multiplayer online games, peer-to-peer applications, shared memory systems, and shared data stores, such as file systems, databases, optimistic replication systems, and web caching.
Operating a distributed system may involve many interacting components located at different places in the network. It is important to manage the consistency across all of these components, including consistency in the information stored and the operations performed by these components, to ensure that the distributed system behaves as intended according to how the system was designed. To this end, a consistency model may be established. A consistency model is a set of rules for managing consistency in a distributed system. These rules constrain how a distributed system operates to ensure that the system behaves predictably.